package com.wyh.mapper.groupOne.organization;


import com.wyh.domain.po.groupOne.MasterDataUser;
import com.wyh.domain.po.groupOne.organization.MasterDataOrganization;
import com.wyh.domain.po.groupOne.projectabout.ProjectPO;
import com.wyh.domain.vo.groupOne.threemeterTree.MasterDataOrganizationVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MasterDataOrganizationMapper {
    // 查出所有组织的方法
    public List<MasterDataOrganization> selectAll();

    // 查出所有组织的方法（VO版）
    public List<MasterDataOrganizationVO> selectAllReVO();

    // 根据父id查询子菜单的方法
    public List<MasterDataOrganization> selectBySid(Integer sid);

    // 根据组织的id查询一个组织信息的方法
    public MasterDataOrganization selectByOid(Integer id);

    // 查询出除了一级菜单外的的菜单的方法
    public List<MasterDataOrganization> selectAllNotBase();

    // 新增组织的方法
    public boolean insertOrganization(MasterDataOrganization masterDataOrganization);

    // 根据用户的id查找菜单树根节点的方法
    public MasterDataOrganization selectOrganizationBaseByUserId(@Param("userId") Integer userId);

    // 编辑组织的方法
    public boolean updateOrganization(MasterDataOrganization masterDataOrganization);

    // 查询组织状态的方法
    public Integer selectStateByOid(Integer id);

    // 根据顶级组织的id查询所有子组织
    public List<MasterDataOrganization> selectAllByTopOrganizationId(Integer id);

    // 删除一个组织的方法
    public boolean deleteOrganization(Integer id);

    // 根据组织id查看项目的方法
    public ProjectPO selectProjectByOid(Integer oid);

    // 根据组织id查询用户的方法
    public List<MasterDataUser> selectUserByOid(Integer oid);

    // 根据统一信用编码来查询组织的方法
    public MasterDataOrganization selectOrganizationByCreditCode(String creditcode);
}
